import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
// 导入和使用axios
import axios from 'axios'
import VueAxios from 'vue-axios'
Vue.use(VueAxios, axios)
Vue.config.productionTip = false;
// 参数转换插件  json和字符串之间的互相转换
import qs from 'qs'
Vue.prototype.$qs = qs;
// 导入vantui中的组件
import { Button, Tab, Tabs, Icon, List, Cell, Toast, Dialog } from 'vant'
Vue.use(Button)
Vue.use(Tab)
Vue.use(Tabs)
Vue.use(Icon)
Vue.use(List)
Vue.use(Cell)
// 路由拦截器
// router.beforeEach((to, from, next) => {
// if (to.name == "cart") {
//   if (!localStorage.token) {
//     next("/login")
//   } else {
//     next()
//   }
// }
// })

// axios 拦截器 拦截请求操作
// axios 自定义配置 全局配置
// const myaxios = axios.create({
//   baseURL: "http://127.0.0.1:3000",
//   timeout: 1000,
//   headers: { "Content-type": "application/json" }
// })
// 请求的基本地址  
// axios.defaults.baseURL = "/api"
//传一些额外的key，value在请求头传送 权限配置
// axios.defaults.headers.common["Authorization"] = "token";
// 设置请求
// axios.defaults.headers.post['Content-Type'] = "application/x-www-form-urlencoded"

// 添加axios请求拦截器
axios.interceptors.request.use(function (config) {
  // 拦截条件  
  // 1.请求地址config.url
  // 2.请求发送的数据config.data 
  // 3.请求方式 config.method
  // 4.请求头的数据 config.headers
  console.log(config)
  // 通过请求地址拦截
  // if (config.url == "https://api.ymduo.com/Member/information") {
  //   if (!localStorage.token) {
  //     router.push("/login")
  //   } else {
  //     return config
  //   }
  // }
  // 2通过请求方式拦截
  if (config.method == "post") {
    config.headers['Content-Type'] = 'application/x-www-form-urlencoded'
  } else {
    // Toast("不允许get请求")
  }
  // 通过请求数据拦截
  // if (config.data.uid !== 888) {
  //   Dialog.confirm({
  //     title: '错误提示',
  //     message: '发送的数据不正确',
  //   }).then(() => { //点击确认
  //     // on close
  //   }).catch(() => {//点击了取消

  //   });
  // }

  return config// 让请求继续

}, error => {
  // 请求发生错误的执行函数
  console.log(error)
})
// axios 响应拦截器--------------------------
axios.interceptors.response.use(function (response) {
  // response.config.url  根据地址拦截
  //response.data 根据响应的数据拦截 后台返回的数据
  console.log(response)
  if (response.data.code == 401) {
    Dialog.alert({
      title: "提示",
      message: "请求参数错误"
    })
  }
  if (response.data.code == 200) {
    Dialog.alert({
      title: "提示",
      message: "请求成功"
    })
  }
  if (response.data.code == 50001) {
    Dialog.alert({
      title: "提示",
      message: "登录过期"
    })
  }
  return response
}, err => {
  console.log(err)
})


// 可以不作为组件使用
Vue.prototype.$Toast = Toast;
Vue.prototype.$Dialog = Dialog;
new Vue({
  router,
  store,
  render: h => h(App)
}).$mount("#app");
// axios 拦截器
//ui 框架   
// vant - ui
// element - ui     iview  mintui
// antd - design - vue



